package com.Liyunhan.design;

import java.util.ArrayList;

/**
 * @Description: *规范性接口*
 *      由于大家的分布类设计各不相同(包括输入输出, 使用容器, 模拟方法), 很难统一设计一个通用的接口, 本接口不提供
 * 对于大家类的规范, 仅供GUI类实现用, 但是其他的分布类想要加入到接口中, 需要遵守一些规范性的要求(见如下方法注释)
 * 因为拿不到每个人的分布类代码, 这里仅实现了几何分布(其他分布加入需遵守规范)
 * @Author: Liyunhan
 * @Date: 2021/12/18 15:50
 */
public interface normalization {
    /**
     * 本接口为规范性接口 -> 此接口并不需要各分布类实现(是写给GUI类实现的), 提供一些必须的规范
     * 1. 要求分布类的类名(文件名)为大驼峰命名格式.
     * 2. 要求将模拟过程在构造方法中完成(实例化对象后直接将结果写在传入的两个ArrayList容器中)
     *    分别放置公式结果和模拟结果.
     * 3. 要求模拟的结果放入一个ArrayList中(simuResults), 计算的结果放入一个ArrayList中(calResults)
     * @return
     */
    void startSimu(ArrayList hyperparams, ArrayList simuResults, ArrayList calResults, String distributionName);
}
